<script>

//1、异常穿透。最初的失败的promise会经由每个then传递到最后的catch
new Promise((resolve, reject) => {
    reject("*")
}).then(
    value => {console.log(value)}
    //reason => {throw reason}  //未指定失败的回调，则默认指定为它
).then(
    value => {console.log(value)}
).then(
    value => {console.log(value)}
).catch(
    //2、中断promise链。catch也会返回promise对象，会继续向后执行。
    //返回一个空的promise会中断链式执行，因为空promise的状态为pending，不会向下执行
    reason => {
        console.log("catch",reason)
        return new Promise(()=>{})
    } 
).then(
    value => {console.log("最后一个then",value)}
)

</script>